﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _01我的第一个项目
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello world");
            Console.ReadKey();


            //int c = 0;
            //Console.WriteLine("输入");
            //int a = Convert.ToInt32(Console.ReadLine());
            //int d = 0;
            //for(int i = 0; i < a; i++)
            //{
            //    Console.WriteLine(a);


            //}

            //Console.ReadKey();

            Console.WriteLine("请输入一个N");

            int n = int.Parse(Console.ReadLine());
            //Console.WriteLine(n + "的阶乘是：" + JieChen(n));


            Console.WriteLine(n + "的阶乘之和是" + JieChenDeHe(n));
        }

        static int JieChenDeHe(int n)
        {
            if (n == 1) return 1;
            return JieChen(n) + JieChenDeHe(n - 1);
        }

        static int JieChen(int n)
        {
            if (n <= 1)
            {
                return 1;
            }
            else
            {
                return n * JieChen(n - 1); 
            }




            /*
                 n * JieChen(n - 1);
              1. 5 * JieChen(5 - 1)
                 5 * 4 * JieChen(4 - 1)  5 * 4 * JieChen(3)
                 5 * 4 * 3 * JieChen(2) 
                 5 * 4 * 3 * 2 * 1 
             */

            //if (n <= 1) return 1;
            //return n * JieChen(n - 1);

            return n <= 1 ? 1 : n * JieChen(n - 1);
        }
    }
}